<?php

namespace Users\Login\Helper;

use Pinenut\User\Profile;
use Users\FacebookConfig as Config;

/**
 * Обработчик формы локальной регистрации
 * для действия входа 
 * @author kosh
 *        
 */
trait Facebook {
	
	use \Pinenut\User\OAuth2\Auth;
	
	function config() {
		$config = Config::get ();
		$config [Config::REDIRECTURL] = 'http://' . $_SERVER ['HTTP_HOST'] . 
			$this->url ( 'users.login.facebook' );
		$this->config = $config;
		return $config;
	}
	
	function createAuth($data) {
		// идентификатора пользователя нет, получаем его другим запросом
		
 		$auth = new \Pinenut\User\OAuth2\Facebook();
 		$auth->accessToken = $data['access_token'];
		$auth->accessTokenExpired = time() + $data['expires'];
		
		$config = $this->config();
		
		// осуществеление аутетинфикации
		$client = new \OAuth2\Client ( $config[Config::CLIENTID], $config[Config::CLIENTSECRET] );
		
		$client->setAccessToken($auth->accessToken);
		
		$response = $client->fetch ( 'https://graph.facebook.com/me' );
		
		$this->data = $response['result'];
		if (isset($this->data['id'])) {
			$auth->id = $this->data['id'];
			$auth = $auth->auth();
			if ($auth) {
				// всё хорошо
				return $auth;
			} else {
				// у нас этого пользователя нет, двигаем на регистрацию
				$this->redirect($this->url ( 'users.register.facebook' ));
				$this->noRender(true);
			}
		}
	}
}